Out of the Tar Pit
https://curtclifton.net/papers/MoseleyMarks06a.pdf
Clojure作成時にRich Hickeyが影響を受けたという、2006年の論文
ソフトウェアは複雑だが、その複雑さには種類があり、コントロールできる、という主張
タイトルは人間の神話の章タイトルThe tar pit (タールの沼)から来ている
解説記事
https://tech.uzabase.com/entry/2021/05/20/141950
複雑であるとは、推論が効きにくいか、不可能であること
論文では、複雑性の原因を大きく4つに分けて説明する
状態
コントロール
ifなどの制御構文のこと
プログラムサイズ
プログラミング言語がパワフルすぎる
ohbarye.icon クリーンアーキテクチャ本で「プログラミングパラダイムごとの制約」の話をしてたのはまさにこれ。なんでもできるC言語との対比
状態とコントロールは絶対になくならない
コンピューターシステムとはユーザーが管理したい状態を制御するものだから
複雑さの種類
本質的な複雑さ
偶発的な複雑さ(付随的・偶有的)
「ユーザーが、その言葉を聞いても、それがなんなのかわからないようなものは、すべて付随的と考えるべき」
複雑さを避ける方法
分割する split
状態とロジック
計算できる・導出可能なものはロジックへ
状態と思っていたものもロジックにできたりする
必須なものと付随的なもの
生年月日がユーザーから見て必須、年齢は計算可能なので付随的
付随的なもののうち、有用なものと不要なもの
避ける avoid